<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>Index action | Elasticsearch Guide [7.7] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="up" href="actions.html" title="Actions">
<link rel="prev" href="actions-webhook.html" title="Webhook action">
<link rel="next" href="actions-logging.html" title="Logging Action">
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/7.7">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="7.7">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<strong>IMPORTANT</strong>: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="xpack-alerting.html">Alerting on cluster and index events</a></span>
»
<span class="breadcrumb-link"><a href="actions.html">Actions</a></span>
»
<span class="breadcrumb-node">Index action</span>
</div>
<div class="navheader">
<span class="prev">
<a href="actions-webhook.html">« Webhook action</a>
</span>
<span class="next">
<a href="actions-logging.html">Logging Action »</a>
</span>
</div>
<div class="section xpack">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="actions-index"></a>Index action<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/watcher/actions/index.asciidoc">edit</a><a class="xpack_tag" href="/subscriptions"></a>
</h2>
</div></div></div>
<p>Use the <code class="literal">index</code> action to index data into Elasticsearch.
See <a class="xref" href="actions-index.html#index-action-attributes" title="Index action attributes">Index action attributes</a> for the supported attributes.</p>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_configuring_index_actions"></a>Configuring index actions<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/watcher/actions/index.asciidoc">edit</a>
</h3>
</div></div></div>
<p>The following snippet shows a simple <code class="literal">index</code> action definition:</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">"actions" : {
  "index_payload" : { <a id="CO525-1"></a><i class="conum" data-value="1"></i>
    "condition": { ... }, <a id="CO525-2"></a><i class="conum" data-value="2"></i>
    "transform": { ... }, <a id="CO525-3"></a><i class="conum" data-value="3"></i>
    "index" : {
      "index" : "my-index", <a id="CO525-4"></a><i class="conum" data-value="4"></i>
      "doc_id": "my-id" <a id="CO525-5"></a><i class="conum" data-value="5"></i>
    }
  }
}</pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO525-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>The id of the action</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO525-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>An optional <a class="xref" href="condition.html" title="Conditions">condition</a> to restrict action execution</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO525-3"><i class="conum" data-value="3"></i></a></p>
</td>
<td align="left" valign="top">
<p>An optional <a class="xref" href="transform.html" title="Payload transforms">transform</a> to transform the payload and prepare the data that should be indexed</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO525-4"><i class="conum" data-value="4"></i></a></p>
</td>
<td align="left" valign="top">
<p>The elasticsearch index to store the data to</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO525-5"><i class="conum" data-value="5"></i></a></p>
</td>
<td align="left" valign="top">
<p>An optional <code class="literal">_id</code> for the document, if it should always be the same document.</p>
</td>
</tr>
</table>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="index-action-attributes"></a>Index action attributes<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/watcher/actions/index.asciidoc">edit</a>
</h3>
</div></div></div>
<div class="informaltable">
<table border="1" cellpadding="4px">
<colgroup>
<col class="col_1">
<col class="col_2">
<col class="col_3">
<col class="col_4">
</colgroup>
<thead>
<tr>
<th align="left" valign="top">Name</th>
<th align="left" valign="top">Required</th>
<th align="left" valign="top">Default</th>
<th align="left" valign="top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p><code class="literal">index</code></p></td>
<td align="left" valign="top"><p>yes</p></td>
<td align="left" valign="top"><p>-</p></td>
<td align="left" valign="top"><p>The Elasticsearch index to index into.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">doc_id</code></p></td>
<td align="left" valign="top"><p>no</p></td>
<td align="left" valign="top"><p>-</p></td>
<td align="left" valign="top"><p>The optional <code class="literal">_id</code> of the document.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">execution_time_field</code></p></td>
<td align="left" valign="top"><p>no</p></td>
<td align="left" valign="top"><p>-</p></td>
<td align="left" valign="top"><p>The field that will store/index the watch execution
                                                      time.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">timeout</code></p></td>
<td align="left" valign="top"><p>no</p></td>
<td align="left" valign="top"><p>60s</p></td>
<td align="left" valign="top"><p>The timeout for waiting for the index api call to
                                                      return. If no response is returned within this time,
                                                      the index action times out and fails. This setting
                                                      overrides  the default  timeouts.</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">refresh</code></p></td>
<td align="left" valign="top"><p>no</p></td>
<td align="left" valign="top"><p>-</p></td>
<td align="left" valign="top"><p>Optional setting of the <a href="/guide/en/elasticsearch/reference/7.7/docs-refresh.html" class="ulink" target="_top">refresh policy</a>
                                                      for the write request</p></td>
</tr>
</tbody>
</table>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="anatomy-actions-index-multi-doc-support"></a>Multi-document support<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/x-pack/docs/en/watcher/actions/index.asciidoc">edit</a>
</h3>
</div></div></div>
<p>Like with all other actions, you can use a <a class="xref" href="transform.html" title="Payload transforms">transform</a> to replace
the current execution context payload with another and by that change the document
that will end up indexed.</p>
<p>The index action plays well with transforms with its support for the special <code class="literal">_doc</code>
payload field.</p>
<p>When resolving the document to be indexed, the index action first looks up for a
<code class="literal">_doc</code> field in the payload. When not found, the payload is indexed as a single
document.</p>
<p>When a <code class="literal">_doc</code> field exists, if the field holds an object, it is extracted and indexed
as a single document. If the field holds an array of objects, each object is treated as
a document and the index action indexes all of them in a bulk.</p>
<p>An <code class="literal">_index</code>, or <code class="literal">_id</code> value can be added per document to dynamically set the index and ID
of the indexed document.</p>
<p>The following snippet shows a multi-document <code class="literal">index</code> action definition:</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">"actions": {
  "index_payload": {
    "transform": {
      "script": """
      def documents = ctx.payload.hits.hits.stream()
        .map(hit -&gt; [
          "_index": "my-index", <a id="CO526-1"></a><i class="conum" data-value="1"></i>
          "_id": hit._id, <a id="CO526-2"></a><i class="conum" data-value="2"></i>
          "severity": "Sev: " + hit._source.severity <a id="CO526-3"></a><i class="conum" data-value="3"></i>
        ])
        .collect(Collectors.toList());
      return [ "_doc" : documents]; <a id="CO526-4"></a><i class="conum" data-value="4"></i>
      """
    },
    "index": {} <a id="CO526-5"></a><i class="conum" data-value="5"></i>
  }
}</pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO526-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>The document’s index</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO526-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>An optional <code class="literal">_id</code> for the document</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO526-3"><i class="conum" data-value="3"></i></a></p>
</td>
<td align="left" valign="top">
<p>A new <code class="literal">severity</code> field derived from the original document</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO526-4"><i class="conum" data-value="4"></i></a></p>
</td>
<td align="left" valign="top">
<p>The payload <code class="literal">_doc</code> field which is an array of documents</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO526-5"><i class="conum" data-value="5"></i></a></p>
</td>
<td align="left" valign="top">
<p>Since the <code class="literal">_index</code> was informed per document this should be empty</p>
</td>
</tr>
</table>
</div>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="actions-webhook.html">« Webhook action</a>
</span>
<span class="next">
<a href="actions-logging.html">Logging Action »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
